﻿namespace Zero.Frontend
{
    /// <summary>
    /// This interface marks a class as an <see cref="IBusyService"/>
    /// </summary>
    /// <remarks>
    /// This class is implemented in <see cref="DefaultBusyService"/>.
    /// This interface was taken from the Caliburn Framework.
    /// </remarks>
    public interface IBusyService
    {
        /// <summary>
        /// Marks specific <paramref name="busyViewModel"/> as busy, showing busy indicator.
        /// </summary>
        /// <param name="sourceViewModel"></param>
        /// <param name="busyViewModel"></param>
        void MarkAsBusy(object sourceViewModel, object busyViewModel);

        /// <summary>
        /// Marks specific <paramref name="sourceViewModel"/> as not busy, hiding busy indicator.
        /// </summary>
        /// <param name="sourceViewModel"></param>
        void MarkAsNotBusy(object sourceViewModel);
    }
}
